Interactive Plot using plotly

Static Plot using ggplot2

Code

Code for ggplot2 plot

library(tidyverse)
library(scales)
library(plotly)
library(lubridate)

philly <- read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-12-03/tickets.csv") 

totals <- philly %>% 
  mutate(month = month(issue_datetime),
         day = day(issue_datetime), 
         wday = weekdays(issue_datetime),
         text_month = months(issue_datetime)) %>%
  group_by(text_month, month, day, wday) %>% 
  summarise(fines = sum(fine, na.rm = TRUE)) %>%
  ungroup() %>% 
  arrange(month, day) %>%
  mutate(week = ifelse(day == 1, 1,
                       ifelse(wday == "Sunday", 1, 0))) %>%
  group_by(month) %>%
  mutate(week = cumsum(week),
         wday = str_sub(wday, 1, 3),
         fine_txt = paste0("$",formatC(fines, format="f", big.mark=",", digits = 0)),
         desc = paste(wday, text_month, day, 2017, "\n", fine_txt)) %>% 
  ungroup()

wday_vec <- c("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat")
totals$wday <- factor(totals$wday, levels = wday_vec)
month_vec <- c("January", "February", "March", "April", "May", "June",
               "July", "August", "September", "October", "November", "December") 
totals$text_month <- factor(totals$text_month, 
                            levels =  month_vec)
philly_calendar <- ggplot(totals, aes(x = wday, y = week, text = desc)) + 
  geom_tile(aes(fill = fines), colour = "white") +
  facet_wrap(~text_month, scales = "free") + 
  scale_y_reverse() + 
  theme_minimal() + 
  scale_fill_viridis_c(labels = dollar) + 
  scale_x_discrete(position = "top") + 
  ylab("") + xlab("") + labs(fill = "Fines Issued") + 
  ggtitle("Philadelphia Parking Violations (2017)") +
  theme(panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(),
        axis.text.y = element_blank(),
        strip.text.x = element_text(
          size = 12, color = "black", face = "bold"), 
        plot.title = element_text(size = 14, hjust = 0.5)) 

Code for interactive chart using plotly

philly_plotly <- ggplotly(philly_calendar, tooltip = "desc")